﻿Public Class frmCircuito4R
    Dim resistencia1 As Integer
    Dim resistencia2 As Integer
    Dim resistencia3 As Integer
    Dim resistencia4 As Integer
    Dim tension As Integer
    Dim intensidad1 As Double
    Dim intensidad2 As Double
    Dim intensidad3 As Double
    Dim intensidad4 As Double
    Dim intensidadTotal As Double
    Dim resistenciaEquivalente As Double
    Dim tension1 As Double
    Dim tension2 As Double
    Dim tension3 As Double
    Dim tension4 As Double
    Dim intensidad1_tomado As Double
    Dim intensidad2_tomado As Double
    Dim intensidad3_tomado As Double
    Dim intensidad4_tomado As Double
    Dim intensidadTotal_tomado As Double
    Dim resistenciaEquivalente_tomado As Double
    Dim tension1_tomado As Double
    Dim tension2_tomado As Double
    Dim tension3_tomado As Double
    Dim tension4_tomado As Double
    Dim contador As Integer

    Private Sub btnCalculadora_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCalculadora.Click
        Shell("C:\WINDOWS\system32\calc.exe", AppWinStyle.NormalFocus)
    End Sub

    Private Sub frmCircuito4R_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        llenarFormulario()
        txtResistenciaEquivalente.Focus()
    End Sub

    Private Sub btnSalir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSalir.Click
        Me.Close()
    End Sub

    Private Sub btnReiniciar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnReiniciar.Click
        reiniciar()
    End Sub

    Private Sub btnAceptar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAceptar.Click
        verificar()
    End Sub

    'METODOS

    Private Sub llenarFormulario()
        Label1.Text = "Hola " + nombreUsuario + ". Dado el siguiente circuito y sus datos, rellenar el formulario." + vbCrLf + "Ten en cuenta que dispones de un acceso a la calculadora en los botones de abajo."
        lblResistencia1.Text = aleatorio(3, 40)
        lblResistencia2.Text = aleatorio(3, 40)
        lblResistencia3.Text = aleatorio(3, 40)
        lblResistencia4.Text = aleatorio(3, 40)
        lblTension.Text = aleatorio(5, 13)
        reiniciar()
        contador = 3
    End Sub

    Private Sub reiniciar()
        txtIntensidad1.Text = ""
        txtIntensidad2.Text = ""
        txtIntensidad3.Text = ""
        txtIntensidad4.Text = ""
        txtIntensidadTotal.Text = ""
        txtResistenciaEquivalente.Text = ""
        txtTension1.Text = ""
        txtTension2.Text = ""
        txtTension3.Text = ""
        txtTension4.Text = ""
    End Sub

    Private Sub verificar()
        tomarValores()
        calcularMixto()

        Dim resultado = compararResultados()

        If resultado = "" Then
            If MessageBox.Show("Felicidades, te ha salido bien el ejercicio. ¿Deseas continuar con otro?", "Confirmación", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) = MsgBoxResult.Yes Then
                llenarFormulario()
            Else
                Me.Close()
            End If
        Else
            If contador > 0 Then
                resultado += vbCrLf + "Te quedan " + contador.ToString + " intentos."
                MessageBox.Show(resultado, "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
                contador = contador - 1
            Else
                If MessageBox.Show("Ya has agotado los intentos para este ejercicio. ¿Desea realizar otro? Si ingresas No, se cerrara la ventana.", "Confirmación", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = MsgBoxResult.Yes Then
                    llenarFormulario()
                Else
                    Me.Close()
                End If
            End If
        End If
    End Sub

    Private Sub tomarValores()
        tension = lblTension.Text
        resistencia1 = lblResistencia1.Text
        resistencia2 = lblResistencia2.Text
        resistencia3 = lblResistencia3.Text
        resistencia4 = lblResistencia4.Text
        If txtIntensidad1.Text = "" Then
            intensidad1_tomado = 0
        Else
            intensidad1_tomado = Double.Parse(txtIntensidad1.Text)
        End If

        If txtIntensidad2.Text = "" Then
            intensidad2_tomado = 0
        Else
            intensidad2_tomado = Double.Parse(txtIntensidad2.Text)
        End If

        If txtIntensidad3.Text = "" Then
            intensidad3_tomado = 0
        Else
            intensidad3_tomado = Double.Parse(txtIntensidad3.Text)
        End If

        If txtIntensidad4.Text = "" Then
            intensidad4_tomado = 0
        Else
            intensidad4_tomado = Double.Parse(txtIntensidad4.Text)
        End If

        If txtIntensidadTotal.Text = "" Then
            intensidadTotal_tomado = 0
        Else
            intensidadTotal_tomado = Double.Parse(txtIntensidadTotal.Text)
        End If

        If txtResistenciaEquivalente.Text = "" Then
            resistenciaEquivalente_tomado = 0
        Else
            resistenciaEquivalente_tomado = Double.Parse(txtResistenciaEquivalente.Text)
        End If

        If txtTension1.Text = "" Then
            tension1_tomado = 0
        Else
            tension1_tomado = Double.Parse(txtTension1.Text)
        End If

        If txtTension2.Text = "" Then
            tension2_tomado = 0
        Else
            tension2_tomado = Double.Parse(txtTension2.Text)
        End If

        If txtTension3.Text = "" Then
            tension3_tomado = 0
        Else
            tension3_tomado = Double.Parse(txtTension3.Text)
        End If

        If txtTension4.Text = "" Then
            tension4_tomado = 0
        Else
            tension4_tomado = Double.Parse(txtTension4.Text)
        End If
    End Sub

    Private Sub calcularMixto()
        resistenciaEquivalente = FormatNumber(resistencia1 + 1 / (1 / resistencia2 + 1 / resistencia3) + resistencia4, 2)
        intensidadTotal = FormatNumber(tension / resistenciaEquivalente, 2)
        intensidad1 = intensidadTotal
        intensidad4 = intensidadTotal
        tension1 = FormatNumber(intensidad1 * resistencia1, 2)
        tension4 = FormatNumber(intensidad4 * resistencia4, 2)
        tension2 = FormatNumber(intensidadTotal * (1 / (1 / resistencia2 + 1 / resistencia3)))
        tension3 = tension2
        intensidad2 = FormatNumber(tension2 / resistencia2, 2)
        intensidad3 = FormatNumber(tension3 / resistencia3, 2)
    End Sub

    Private Function compararResultados() As String
        Dim resultado As String = ""
        If Math.Abs(resistenciaEquivalente - resistenciaEquivalente_tomado) > 0.5 Then
            resultado = vbCrLf + "Resistencia Equivalente [Incorrecto]"
        End If
        If Math.Abs(intensidadTotal - intensidadTotal_tomado) > 0.1 Then
            resultado += vbCrLf + "Intensidad Total [Incorrecto]"
        End If
        If Math.Abs(intensidad1 - intensidad1_tomado) > 0.1 Then
            resultado += vbCrLf + "Intensidad 1 [Incorrecto]"
        End If
        If Math.Abs(intensidad2 - intensidad2_tomado) > 0.1 Then
            resultado += vbCrLf + "Intensidad 2 [Incorrecto]"
        End If
        If Math.Abs(intensidad3 - intensidad3_tomado) > 0.1 Then
            resultado += vbCrLf + "Intensidad 3 [Incorrecto]"
        End If
        If Math.Abs(intensidad4 - intensidad4_tomado) > 0.1 Then
            resultado += vbCrLf + "Intensidad 4 [Incorrecto]"
        End If
        If Math.Abs(tension1 - tension1_tomado) > 0.5 Then
            resultado += vbCrLf + "Tension 1 [Incorrecto]"
        End If
        If Math.Abs(tension2 - tension2_tomado) > 0.5 Then
            resultado += vbCrLf + "Tension 2 [Incorrecto]"
        End If
        If Math.Abs(tension3 - tension3_tomado) > 0.5 Then
            resultado += vbCrLf + "Tension 3 [Incorrecto]"
        End If
        If Math.Abs(tension4 - tension4_tomado) > 0.5 Then
            resultado += vbCrLf + "Tension 4 [Incorrecto]"
        End If
        Return resultado

    End Function

    Private Sub btnAyuda_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAyuda.Click
        frmFormular.Show()
    End Sub

End Class